/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.lostreseditores.modelo;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author DILOVE
 */
@Entity
@Table(name = "estudiante")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Estudiante.findAll", query = "SELECT e FROM Estudiante e"),
    @NamedQuery(name = "Estudiante.findByIdEstudiante", query = "SELECT e FROM Estudiante e WHERE e.idEstudiante = :idEstudiante"),
    @NamedQuery(name = "Estudiante.findByTipoidestudiante", query = "SELECT e FROM Estudiante e WHERE e.tipoidestudiante = :tipoidestudiante"),
    @NamedQuery(name = "Estudiante.findByNombresestudiante", query = "SELECT e FROM Estudiante e WHERE e.nombresestudiante = :nombresestudiante"),
    @NamedQuery(name = "Estudiante.findByApellidosestudiante", query = "SELECT e FROM Estudiante e WHERE e.apellidosestudiante = :apellidosestudiante"),
    @NamedQuery(name = "Estudiante.findByTelefono", query = "SELECT e FROM Estudiante e WHERE e.telefono = :telefono"),
    @NamedQuery(name = "Estudiante.findByCorreoElectronico", query = "SELECT e FROM Estudiante e WHERE e.correoElectronico = :correoElectronico")})
public class Estudiante implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "id_estudiante")
    private Integer idEstudiante;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "tipoidestudiante")
    private String tipoidestudiante;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "nombresestudiante")
    private String nombresestudiante;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "apellidosestudiante")
    private String apellidosestudiante;
    @Size(max = 255)
    @Column(name = "telefono")
    private String telefono;
    @Size(max = 255)
    @Column(name = "correo_electronico")
    private String correoElectronico;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "estudiante")
    private List<Presentaexamen> presentaexamenList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "estudiante")
    private List<Cursosestudiante> cursosestudianteList;

    public Estudiante() {
    }

    public Estudiante(Integer idEstudiante) {
        this.idEstudiante = idEstudiante;
    }

    public Estudiante(Integer idEstudiante, String tipoidestudiante, String nombresestudiante, String apellidosestudiante) {
        this.idEstudiante = idEstudiante;
        this.tipoidestudiante = tipoidestudiante;
        this.nombresestudiante = nombresestudiante;
        this.apellidosestudiante = apellidosestudiante;
    }

    public Integer getIdEstudiante() {
        return idEstudiante;
    }

    public void setIdEstudiante(Integer idEstudiante) {
        this.idEstudiante = idEstudiante;
    }

    public String getTipoidestudiante() {
        return tipoidestudiante;
    }

    public void setTipoidestudiante(String tipoidestudiante) {
        this.tipoidestudiante = tipoidestudiante;
    }

    public String getNombresestudiante() {
        return nombresestudiante;
    }

    public void setNombresestudiante(String nombresestudiante) {
        this.nombresestudiante = nombresestudiante;
    }

    public String getApellidosestudiante() {
        return apellidosestudiante;
    }

    public void setApellidosestudiante(String apellidosestudiante) {
        this.apellidosestudiante = apellidosestudiante;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getCorreoElectronico() {
        return correoElectronico;
    }

    public void setCorreoElectronico(String correoElectronico) {
        this.correoElectronico = correoElectronico;
    }

    @XmlTransient
    public List<Presentaexamen> getPresentaexamenList() {
        return presentaexamenList;
    }

    public void setPresentaexamenList(List<Presentaexamen> presentaexamenList) {
        this.presentaexamenList = presentaexamenList;
    }

    @XmlTransient
    public List<Cursosestudiante> getCursosestudianteList() {
        return cursosestudianteList;
    }

    public void setCursosestudianteList(List<Cursosestudiante> cursosestudianteList) {
        this.cursosestudianteList = cursosestudianteList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idEstudiante != null ? idEstudiante.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Estudiante)) {
            return false;
        }
        Estudiante other = (Estudiante) object;
        if ((this.idEstudiante == null && other.idEstudiante != null) || (this.idEstudiante != null && !this.idEstudiante.equals(other.idEstudiante))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.lostreseditores.modelo.Estudiante[ idEstudiante=" + idEstudiante + " ]";
    }
    
}
